const fs = require('fs');

// 1. 定义承诺
let p1 = new Promise((resolve, reject) => {
  // 这里封装你的代码
  fs.readFile('./files/a.txt', 'utf-8', (err, data) => {
    err ? reject(err) : resolve(data.length);
  })
});

let p2 = new Promise((resolve, reject) => {
  // 这里封装你的代码
  fs.readFile('./files/b.txt', 'utf-8', (err, data) => {
    err ? reject(err) : resolve(data.length);
  })
});

let p3 = new Promise((resolve, reject) => {
  // 这里封装你的代码
  fs.readFile('./files/c.txt', 'utf-8', (err, data) => {
    err ? reject(err) : resolve(data.length);
  })
});

// 2. 获取结果
/**
 * 调用then之后，还得到Promise对象
 * 调用then之后，还能继续调用 then 或者 catch（可以链式调用）
 * 前面的then返回一个值，这个值会被后面的then获取到（不是真正的意义）
 * 前面的then返回一个Promise对象，Promise对象中成功的结果会被下一个then得到（真正的意义）
 */
p1.then(res1 => {
  console.log(res1); // 10
  return p2;
}).then(res2 => {
  console.log(res2); // 13000
  return p3;
}).then(res3 => {
  console.log(res3); // 5
})